package com.dsl.dslsuzhou.service;

import com.dsl.dslsuzhou.mapper.JdbcExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 通用图表服务（调用存储过程）
 */
@Service
public class ChartUniversalService {
    
    @Autowired
    private JdbcExecutor jdbcExecutor;
    
    /**
     * 调用通用存储过程
     * 
     * @param factCode 事实表代码
     * @param timeWindow 时间窗口类型
     * @param timeValue 时间值
     * @param timeUnit 时间单位
     * @param timeBegin 开始时间
     * @param timeEnd 结束时间
     * @param granularity 时间粒度
     * @param dimensions 维度列表（JSON格式）
     * @param filters 过滤条件（JSON格式）
     * @param metrics 指标列表（JSON格式）
     * @param orderBy 排序条件（JSON格式）
     * @param fillTimeAxis 是否补齐时间轴
     * @param fillZero 是否用0填充
     * @return 查询结果
     */
    public List<Map<String, Object>> call(
            String factCode,
            String timeWindow,
            Integer timeValue,
            String timeUnit,
            String timeBegin,
            String timeEnd,
            String granularity,
            String dimensions,
            String filters,
            String metrics,
            String orderBy,
            Boolean fillTimeAxis,
            Boolean fillZero) {
        
        return jdbcExecutor.callStoredProcedure(
                "sp_chart_run",
                factCode,
                timeWindow,
                timeValue,
                timeUnit,
                timeBegin,
                timeEnd,
                granularity,
                dimensions,
                filters,
                metrics,
                orderBy,
                fillTimeAxis ? 1 : 0,
                fillZero ? 1 : 0
        );
    }
}
